package br.com.sovi.resources.usuario;

import org.openinsula.vulcano.orm.command.DaoCommand;
import org.openinsula.vulcano.orm.dao.query.DaoQuery;
import org.openinsula.vulcano.orm.dao.query.builder.DaoSelect;

import br.com.sovi.persistence.Usuario;

/**
 * @author João Galli
 *
 */
public class EfetuaAutenticacaoCommand extends DaoCommand<Boolean> {
	private static final long serialVersionUID = 1L;

	private String login;

	private String senha;

	private String errorMessage;

	public EfetuaAutenticacaoCommand(String login, String senha) {
		super();
		this.login = login;
		this.senha = senha;
	}

	@Override
	public Boolean execute() {

		DaoQuery<Usuario> query = new DaoSelect<Usuario>().all().from(Usuario.class).eq("login", login).limit(1)
				.toQuery();

		Usuario usuario = dao.findUnique(query);

		if (usuario == null) {
			setErrorMessage("Usuário não encontrado com login: " + login);
			return Boolean.FALSE;
		}

		if (!usuario.getSenha().equals(senha)) {
			setErrorMessage("Senha incorreta!");
			return Boolean.FALSE;
		}

		return Boolean.TRUE;
	}

	private void setErrorMessage(String errorMessage) {
		this.errorMessage = errorMessage;
	}

	public String getErrorMessage() {
		return errorMessage;
	}

}
